This invention relates generally to computer software, and more specifically to a system and method for allowing an application program to integrate and/or synchronize with a computer directory by providing a driver infrastructure for virtual replicas and the like.
Personal computers or workstations may be linked in a computer network to facilitate the sharing of data, applications, files, and other resources. One common type of computer network is a client/server network, where some computers act as servers and others as clients. In a client/server network, the sharing of resources is accomplished through the use of one or more servers. Each server includes a processing unit that is dedicated to managing centralized resources and to sharing these resources with other servers and/or various personal computers and workstations, which are known as the “clients” of the server.
Directories and directory services are often provided to enable a digital environment for a particular resource. One example of a directory service is Novell Directory Services (“NDS”) for Novell Netware networks, as provided by Novell, Inc. of Provo, Utah. NDS provides a logical tree-structure view of all resources on the network so that clients can access them without knowing where they are physically located. For a given resource, an entry is made in a directory such as NDS. Specific entries of a directory are only available by directly accessing the directory.
Typically, a directory is established for one or more applications to access. A directory will have, for example, a native application program interface (“API”) that provides a set of routines, protocols, and tools for using the directory. In this way, the directory's native API allows programmers to write applications that can utilize the information stored in a directory with appropriate access control. As a result, the applications must conform to the directory.
There has only been marginal success in the arena of application integration with directories. One of the primary problems is that many applications have already been written that utilize the same resources that are defined and managed from a directory. Also, many application programs were created prior to the advent of wide spread directory use. Of course any changes to application programs are inherently delicate, and are therefore undesirable.
Since these software applications cannot (or will not) access an entry as it resides in a particular directory, the applications will instead store information about the resource in their own directory-like data store. This creates a partial duplicate of the information which the application can access. Furthermore, the application can potentially augment the duplicated information. As a result, a given resource may be fractured among a number of applications or data repositories. As the number of applications that utilize a given resource increases, the likelihood of information about a given resource being unsynchronized, and therefore invalid, increases.
Replication is often used to synchronize distributed data within a given application in an automated and unattended manner. Replication enables many computers or computer applications to work with their own local, current copy, or replica, of a resource entry. For database applications where computers are widely distributed (e.g., geographically), replication provides an efficient way for distributed systems to access current information. To alleviate problems caused by partial data duplication, applications often try to maintain the validity of the replica by communicating with other applications that share the data stored in the replica. However, it is still important for the application to directly access the directory using the directory's native API or online directory service protocols like LDAP, or Lightweight Directory Access Protocol.
It is desired to provide centralized management of distributed resources to applications that utilize those resources, without requiring the applications to be rewritten to utilize the directory directly.
It is also desired to provide a directory interface that does not require updates or changes to an application program.
It is further desired to have a directory maintained as if multiple applications were working on a single, centralized directory.